package LeetCode;

public class TestNum876 {
    //给定一个头结点为 head 的非空单链表，返回链表的中间结点。
//如果有两个中间结点，则返回第二个中间结点
    //快慢指针节点，Fast，Low,L一次走一步，F一次走两步
    public ListNode middleNode(ListNode head) {
        // Fast一次走两步
        ListNode Fast = head;
        //Low一次走一步
        ListNode Low = head;
        //当链表为奇数F.next=null为退出条件，当链表为偶数F=null为结束条件。
        while (Fast!=null&&Fast.next!=null){
            //2Low=Fast--》Low=Fast/2，即意为Fast走完链表后将整个链表除以二的Low，Low为中间节点。
            Low=Low.next;
            Fast=Fast.next.next;
        }
        return Low;
    }
}
